iT邦幫忙

2023 iThome 鐵人賽

DAY 6
0
SideProject30

UVA題型研究系列 第 6

DAY6:Arrange and combine to find common ground

  • 分享至 

  • xImage
  •  

07 UVA10420 List of Conquests
內容
在第一幕中,萊波雷洛向唐娜·埃爾維拉講述了他主人的一長串征服:

「這是我主人所喜愛的美女名單,是我自己列出來的:你看一下,和我一起讀一下。 義大利有六百四十個,德國有兩百三十一個,法國有一百個,土耳其有九十一個; 但在西班牙已經一千零三了! 其中有鄉村姑娘、侍女、都市麗人; 有伯爵夫人、男爵夫人、侯爵夫人、公主:各個等級、各個體型、各個年齡的女性。 」(Madamina, il Catalogo è questo)

由於萊波雷洛按照時間順序記錄了唐璜所“喜愛”的所有“美女”,因此他要向別人展示他主人的征服是非常麻煩的,因為他需要按國籍來統計“美女”的數量每一次。 你要幫助萊波雷洛數數。

輸入描述
輸入最多包含 2000 行,但第一行。 第一行包含數字n,表示還有n行。 接下來的每一行最多 75 個字符,包含一個國家(第一個單字)和喬瓦尼所愛的一個女人的名字(該行中的其餘單字)。 您可能會假設所有國家/地區的名稱僅由一個單字組成。
輸出說明
輸出由按字母順序排列的行組成。 每行以一個國家的名稱開頭,後面是喬瓦尼在該國家所愛的女性總數,中間用空格分隔。

題目大意:有一個情聖,要記錄於攻略本,原本是按照時間排序,現在要照國籍和姓名重新排序
題解:按照國籍的英文字母排序,輸出國籍與該國人數

    while True:  #進入無限迴圈,一直執行,直到遇到 EOFError 錯誤
            try:
                    a = {}  #創建一個空的字典 a,用於存儲單詞和它們的出現次數
                    n = int(input())  #接受一個整數 n 的輸入,表示接下來會有 n 組文字輸入

                    for i in range(n):  #使用 for 迴圈遍歷 n 次,接受 n 組文字輸入
                            n = input().split()  #接受一行文字輸入,並使用 split() 函數分割成單詞,將結果存儲在變數 n 中

                            if n[0] not in a:  #檢查字典 a 中是否已經存在以 n[0](即第一個單詞)為鍵的項目
                                    a[n[0]] = 1  #如果字典中還不存在以 n[0] 為鍵的項目,則新增該項目並設置其值為 1
                            else:
                                    a[n[0]] += 1 #如果字典中已經存在以 n[0] 為鍵的項目,則增加該項目的值,表示這個單詞又出現了一次

                            b = sorted(a)  #使用 sorted() 函數對字典 a 的鍵(單詞)進行排序,將排序結果存儲在變數 b 中

                    for i in b:  #使用 for 迴圈遍歷排序後的單詞列表 b
                            print("{} {}".format(i, a[i]))  #輸出每個單詞(存儲在變數 i 中)和它們的出現次數(從字典 a 中獲取)

            except EOFError:  #當遇到 EOFError 錯誤時,跳出迴圈
                    break

上一篇
DAY5:Judgment of multiples
下一篇
DAY7:Encryption and decryption
系列文
UVA題型研究30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言